#pragma once

class ISaver
{
public:
	virtual void SaveAnimationPresent() = 0;
	virtual void SaveAnimationNotPresent() = 0;

	virtual void SaveAnimationStart() = 0;
	virtual void SaveAnimationEnd() = 0;
	
	virtual void SaveStartNodes(int nodesCount) = 0;
	virtual void SaveEndNodes() = 0;
	
	virtual void SaveStartNode(int nodeId) = 0;
	virtual void SaveEndNode() = 0;

	virtual void SavePositionBeginSection(int keysCount) = 0;
	virtual void SavePositionKey(float time, float x, float y, float z) = 0;
	virtual void SavePositionEndSection() = 0;

	virtual void SaveRotationBeginSection(int keysCount) = 0;
	virtual void SaveRotationKey(float time, float a, float x, float y, float z) = 0;
	virtual void SaveRotationEndSection() = 0;

	virtual void SaveScaleBeginSection(int keysCount) = 0;
	virtual void SaveScaleKey(float time, float x, float y, float z) = 0;
	virtual void SaveScaleEndSection() = 0;

	virtual void SaveRollBeginSection(int keysCount) = 0;
	virtual void SaveRollKey(float time, float v) = 0;
	virtual void SaveRollEndSection() = 0;

	virtual void SaveLocalTransformMatrix(float *v) = 0;
	virtual void SaveObjectTransformMatrix(float *v) = 0;
	virtual void SaveWorldTransformMatrix(float *v) = 0;
	virtual void SaveInverseLocalTransformMatrix(float *v) = 0;
	virtual void SaveInverseObjectTransformMatrix(float *v) = 0;
	virtual void SaveInverseWorldTransformMatrix(float *v) = 0;

	virtual void SavePivotPoint(float x, float y, float z) = 0;
};
